//////////////////////////////////////////////////////////////////////
// LA_basic.h
//
// SHEN Fangyang
// me@shenfy.com
//
// Copyright (C) SHEN Fangyang, 2011, All rights reserved.
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////
//  Brief Description
//
//	SIMPLE LINEAR ALGEBRA PACKAGE
//
//////////////////////////////////////////////////////////////////////
#pragma once

#include "boost/numeric/ublas/matrix.hpp"
#include "boost/numeric/ublas/vector.hpp"
#include <boost/numeric/bindings/traits/traits.hpp>
#include <boost/numeric/bindings/traits/transpose.hpp>
#include "boost/numeric/bindings/blas/blas.hpp"
#include "boost/numeric/bindings/lapack/lapack.hpp"
#include "boost/numeric/bindings/traits/ublas_vector.hpp"
#include "boost/numeric/bindings/traits/ublas_matrix.hpp"

namespace ublas = boost::numeric::ublas;

namespace grflib { namespace LA {

typedef ublas::matrix<float> FLT_ROW_MAT;
typedef ublas::matrix<float, ublas::column_major> FLT_COL_MAT;
typedef ublas::matrix<double> DBL_ROW_MAT;
typedef ublas::matrix<double, ublas::column_major> DBL_COL_MAT;

typedef ublas::matrix<SHORT, ublas::column_major> SHRT_COL_MAT;

}}

#ifdef _WIN64
#pragma message("\n>> Static Linking with EM64t version of MKL10\n")
#pragma comment(lib, "mkl_intel_lp64.lib")
#pragma comment(lib, "mkl_intel_thread.lib")
#pragma comment(lib, "mkl_solver_lp64.lib")
#pragma comment(lib, "mkl_core.lib")
#pragma comment(lib, "libguide.lib")
#else
#pragma message("\n>> Static Linking with IA32 version of MKL10\n")
#pragma comment(lib, "mkl_intel_c.lib")	
#pragma comment(lib, "mkl_intel_thread.lib")	
#pragma comment(lib, "mkl_solver.lib")
#pragma comment(lib, "mkl_core.lib")
#pragma comment(lib, "libiomp5mt.lib")
#endif
